package collection.stream;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;

public class StreamApiDemo2 {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        Random random = new Random();
        for (int i = 0; i < 10; i++) {
            list.add(random.nextInt(10));
        }
        System.out.println(list);
        /*
            中间环节:
            filter:对集合中的每个元素进行过滤
         */
        //获取集合中的所有偶数
        List<Integer> list2 = list.stream()
                .filter(x->x%2==0)//仅保留满足lambda表达式要求的元素
                .collect(Collectors.toList());
        System.out.println(list2);
        /*
            中间环节:
            distinct:对集合中的每个元素进行去重
         */
        //对集合去重
        List<Integer> list3 = list.stream()
                .distinct()
                .collect(Collectors.toList());
        System.out.println(list3);
        /*
            中间环节:
            sort:对集合中的元素进行排序
         */
//        List<Integer> list4 = list.stream().sorted().collect(Collectors.toList());
        List<Integer> list4 = list.stream()
                .sorted((x1,x2)->x2-x1)//可自行执行比较规则
                .collect(Collectors.toList());
        System.out.println(list4);


        /*
            对list集合每个元素扩大5倍，并且仅保留其中所有的偶数，并去除重复值，再将集合
            按照从大到小排序最终得到结果
         */
        List<Integer> list5 = list.stream()
                .map(x->x*5)
                .filter(x->x%2==0)
                .distinct()
                .sorted(((x1,x2)->x2-x1))
                .collect(Collectors.toList());
        System.out.println(list5);
    }
}
